#include <iostream>
#include <vector>
using namespace std;
 
int main()
{   // 选和不选，01背包？
    string str;
    cin >> str;
    str = ' ' + str;
    int n = str.size() - 1, sum = 0;
    for(int i = 1; i <= n; ++i)
    {
        sum += str[i] - '0';
    }
    if(sum % 2 == 1) // 是奇数
    {
        cout << "No" << endl;
        return 0;
    }
 
    // // 选一些数，使其等于sum / 2;
    // sum /= 2;
    // vector<int> dp(sum + 1); // 滚动数组优化
    // // dp[i][j] 表示，从0选到i，能否凑成总和为sum
    // for(int i = 1; i <= n; ++i)
    // {
    //     for(int j = sum; j >= 0; --j)
    //     {
    //         // dp[i][j] = dp[i - 1][j]; // 不选
    //         int val = str[i] - '0';
    //         if(j >= val)
    //             dp[j] = max(dp[j], dp[j - val] + val); // 选
    //         // cout << dp[i][j] << endl;
    //     }
    // }
    // if(dp[sum] == sum)
    //     cout << "Yes" << endl;
    // else
    //     cout << "No" << endl;
 
    // // 选一些数，使其等于sum / 2;
    // sum /= 2;
    // vector<vector<int>> dp(n + 1, vector<int>(sum + 1));
    // // dp[i][j] 表示，从0选到i，总和不超过j的数的总和
    // for(int i = 1; i <= n; ++i)
    // {
    //     for(int j = 1; j <= sum; ++j)
    //     {
    //         dp[i][j] = dp[i - 1][j]; // 不选
    //         int val = str[i] - '0';
    //         if(j >= val)
    //             dp[i][j] = max(dp[i][j], dp[i - 1][j - val] + val); // 选
    //         // cout << dp[i][j] << endl;
    //     }
    // }
    // if(dp[n][sum] == sum)
    //     cout << "Yes" << endl;
    // else
    //     cout << "No" << endl;
 
    // 选一些数，使其等于sum / 2; // bool 类型 滚动数组优化
    sum /= 2;
    vector<bool> dp(sum + 1);
    dp[0] = true; // 注意初始化，不选就为true
    // dp[i][j] 表示，从0选到i，总和能否凑成j
    for(int i = 1; i <= n; ++i)
    {
        int val = str[i] - '0';
        for(int j = sum; j >= val; --j)
        {
            dp[j] = dp[j] || dp[j - val]; // 选
        }
    }
    if(dp[sum])
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
 
    // // 选一些数，使其等于sum / 2; // bool 类型
    // sum /= 2;
    // vector<vector<bool>> dp(n + 1, vector<bool>(sum + 1, false));
    // dp[0][0] = true; // 注意初始化，不选就为true
    // // dp[i][j] 表示，从0选到i，总和能否凑成j
    // for(int i = 1; i <= n; ++i)
    // {
    //     for(int j = 1; j <= sum; ++j)
    //     {
    //         dp[i][j] = dp[i - 1][j]; // 不选
    //         int val = str[i] - '0';
    //         if(j >= val)
    //             dp[i][j] = dp[i][j] || dp[i - 1][j - val]; // 选
    //         // cout << dp[i][j] << endl;
    //     }
    // }
    // if(dp[n][sum])
    //     cout << "Yes" << endl;
    // else
    //     cout << "No" << endl;
    return 0;
}